// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0

Comp := Rectangle {
//   ><warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
    property<length> custom_prop;
    property<color> color_prop;
    color_prop: red;

    Rectangle {
        x: custom_prop;
        y: nothing;
//         >     <error{Unknown unqualified identifier 'nothing'}
    }

}


export X := Rectangle {
//       ><warning{':=' to declare a component is deprecated. The new syntax declare components with 'component MyComponent {'. Read the documentation for more info}
    width: 50phx;
    height: width;

    foo := Rectangle {
        border_width: foo.height;
    }

    Rectangle {
        width: foo.height;
        height: xxx.fff;
//              >     <error{Cannot access id 'xxx'}
        background: foo.height.blue;
//                             >  <error{Cannot access the field 'blue' of length}
        x: foo.blue;
//             >  <error{Element 'Rectangle' does not have a property 'blue'}

    }

    plop := Comp {
        x: plop.custom_prop;
        color_prop: yellow;
        y: plop.not_exist;
//              >       <error{Element 'Comp' does not have a property 'not_exist'}
    }

    img := Image{}

    callback dummy;
    dummy => {
        ["hello"].length = 45;
//      >                   <error{Assignment needs to be done on a property}
        img.source.width = 45;
//      >                   <error{Assignment needs to be done on a property}

    }

}
